Container based virtualization technologies have gained great importance for the management and operation of applications of all types. In contrast to hypervisor based virtualization technologies that are based on specialized hypervisor operating systems that manage and abstract physical hardware to provide virtual computer systems on which conventional operating systems can be executed, container based virtualization uses features provided by an operating system to create isolated execution environments for processes which are called containers. Processes executed in those containers are provided with an execution environment that simulates a separate operating system.
As multiple containers share one operating system, container based virtualization requires less resources than hypervisor bases virtualization. In addition, container based virtualization provides more flexibility in terms of dynamically creating, starting and stopping virtual environments compared to hypervisor based virtualization, as no virtual hardware must be started and no operating system needs to be installed or started.
Their flexibility and efficiency and the level of process isolation they provide make containers an ideal instrument for agile application management, which e.g. allows to automatically launch or shutdown new container environments hosting application processes based on the current load of an application.
Such highly dynamic setups also generate new requirements for application performance monitoring systems. As containers execute application functionality and contribute to the overall performance of an application, visibility to the performance characteristics of application components executed inside containers is required.
Resource usage monitoring systems are available that provide data describing the usage of resources like CPU, memory or network bandwidth by processes executing within containers, but those measures are often not sufficient to evaluate the performance behavior of processes running in the containers.
Agent based performance monitoring systems exist, that use in-process agents that are automatically injected into processes on startup and which then acquire transaction level performance data from those processes. An exemplary description of such a system may be found in U.S. patent application Ser. No. 15/264,949 which is included herein in its entirety by reference. The described system monitors the startup of processes, determines the type of the starting process and injects a process specific in-process agent into the starting process. Although the described injection process works well on the host operating system level, it fails to inject agents into container-isolated processes as the operating system adaptations performed to trigger the automatic injection and the resources required for the agent injection process, like agent libraries, are typically not visible inside a container.
Consequently, a solution is required that enables the automated injection of in-process agents into container-isolated processes.
This section provides background information related to the present disclosure which is not necessarily prior art.